package cn.tedu.oop;
/*本类用于测试继承中,父类的普通方法的使用*/
public class TestExtends {
    public static void main(String[] args) {
        //4.创建对象进行测试
        Father f = new Father();
        f.eat();
        f.play();
//        System.out.println(f.d);//父类用不了子类
//        f.interest();

        Son s = new Son();
        s.eat();
        s.play();
        s.initiate();
        System.out.println(s.getS());
    }
}

//1.创建父类
class Father{

    private String s = "zxc";

    public String getS() {
        return s;
    }

    public void setS(String s) {
        this.s = s;
    }

    //3.创建父类的普通方法
    public void eat(){
        System.out.println("爸爸爱吃肉");
    }
    public void play(){
        System.out.println("爸爸爱放风筝~");
    }

    public void initiate(){
        System.out.println("risky");
    }
}
//2.创建子类
class Son extends Father{

    Double d = 3.2d;
    /*如果子类对于父类的方法实现不满意,可以在子类中重写父类的方法
     * 重写的语法规则:两同 两小 一大
     * 两同:子类方法的 方法名与参数列表 和父类方法相同
     * 一大:子类方法的 修饰符权限 >= 父类方法的修饰符权限(才能调用父类元方法)
     * 两小:子类方法的返回值类型与父类方法的返回值类型相同,或者是父类方法返回值类型的子类,,,//子类是父类返回值类型的子类(继承方法是)
     * 注意:如果父类方法的返回值类型为void,子类应该保持一致*/
    @Override //注解(理解为标签,熬夜党,追星党,,,一看就知道这个人的大概特点),标记这是一个重写的方法 (如何验证写对修改的方法?)
    public void eat(){
        System.out.println("儿子爱吃蔬菜");
    }
    //重写父类的play(),打印"儿子爱玩游戏"
    /*@Override
    public void play(){
        System.out.println("儿子爱玩游戏");
    }*/
    //@Override //配合上规则,加上注解看看重写的方法写好没有,
    public void play(){
        System.out.println("儿子爱玩游戏");
    }

    public void interest(){
        System.out.println("renovation~");
    }

}






